package com.xinnuo.objectbox.model

import io.objectbox.annotation.Entity
import io.objectbox.annotation.Id
import io.objectbox.annotation.Index

/**
 * 实体注解说明：
 * -> @Entity：表明对象是一个可以持久化的实体；
 * -> @Id：表明对象都有一个long类型的ID来有效地获取或操作对象；
 * -> @Index：表示数据库会建立该属性的索引，当频繁查询该属性时会提高性能；
 * -> @NameInDb：允许您在数据库级别上为属性自定义一个名称；
 * -> @ToOne：一对一关联注解；
 * -> @ToMany：一对多关联注解；
 * -> @Backlink：反向关联注解；
 * -> @Relation：一对多、多对一关联注解；
 * -> @Unique：表示标识的字段必须唯一；
 */
@Entity
data class UserLoginData(
    /**
     * 1、值0（零）和-1（0xFFFFFFFFFFFFFFFF）不能用作Id；
     * 2、Id为0的对象(如果Id是Long类型，则为 null）被认为是新的，
     *    插入这样的对象，数据库会认为是新数据并分配一个新的id；
     * 3、默认情况下，对象Id由ObjectBox分配，
     *    对于每个新的对象，ObjectBox将分配一个未使用的Id，
     *    该Id高于当前在Box中使用的最高Id值；
     * 4、如果您尝试使用Id大于当前最高Id的对象，则ObjectBox将引发错误；
     * 5、如果要自己分配ID，您可以将Id注解更改为@Id(assignable = true) ，
     *    这将允许ID可以有任何值，包括0和-1；
     */
    @Id(assignable = true)
    var id: Long = 0,
    // 用户memberId
    @Index
    var uid: String = "",
    // 用户Id
    var userId: String = "",
    // 腾讯云签名
    var userSign: String = "",
    // 手机号
    var phone: String = "",
    // 店铺Id
    var shopId: String = "",
    // 店铺名称
    var shopName: String = "",
    // 服务商Id
    var serviceId: String = "",
    // 报货送达步数
    var serviceStep: String = "",
    // 员工角色Id
    var userRole: String = "",
    // 员工角色名称
    var roleName: String = "",
    // 店铺申请状态
    var shopStatus: String = "",
    // 来电接单状态
    var callTelStatus: Int = 0,
    // 号码隐私状态
    var privacyStatus: String? = "on",
    // 店铺配置
    var configJson: String = "",
    // 订单超时时间
    var orderWarn: String = "",
    // 过期天数
    var expireDay: Int = 0,
    // 是否营业
    var isOpen: Boolean = false,
    // 是否实名
    var isReal: Boolean = false,
    // 是否开启抢单
    var canRob: Boolean = false,
    // 是否开启实时位置
    var isLocation: Boolean = false,
    // 是否开启报货
    var reportEnable: Boolean = false,
    // 是否纯司机
    var driverEnable: Boolean = false
)
